package tarea2.managedbeans;


import entidades.Administrador;
import entidades.Administrativo;
import entidades.Medico;
import entidades.Paciente;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;
import javax.faces.context.FacesContext;
import entidades.Usuario;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.inject.Inject;

@Named(value = "usuarioMBean")
@SessionScoped
public class UsuarioMBean implements Serializable {

    private Usuario usuario;
    private List<Usuario> usuarios;
    @Inject
    MensajesMBean mensajesBean;
    
    public UsuarioMBean() {
    }

    public MensajesMBean getMensajesBean() {
        return mensajesBean;
    }

    public void setMensajesBean(MensajesMBean mensajesBean) {
        this.mensajesBean = mensajesBean;
    }

    public List<Usuario> getUsuarios() {
        return usuarios;
    }

    void setUsuarios(List<Usuario> usuarios) {
        this.usuarios = usuarios;
    }

    /**
     * Get the value of usuario
     *
     * @return the value of usuario
     */
    public Usuario getUsuario() {
        return usuario;
    }

    /**
     * Set the value of usuario
     *
     * @param usuario new value of usuario
     */
    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public String home() {
        return perfil();
    }

    public String perfil() {
        return "perfil.xhtml";
    }

    public String mensajes() {
        return mensajesRecibidos();
    }
    
    public String mensajesRecibidos() {
        return "mensajes-recibidos.xhtml";
    }

    public String mensajesEnviados() {
        return "mensajes-enviados.xhtml";
    }

    public String mensajesQuejas() {
        return "mensajes-quejas.xhtml";
    }
    
    public String nuevoMensaje() {
        mensajesBean.setEmisor(usuario);
        return "mensaje-nuevo.xhtml";
    }
    
    public String citas() {
        return "cita.xhtml";
    }
    
    public String citasPaciente() {
        return "cita_paciente.xhtml";
    }
    
    public String gestionUsuarios() {
        return "gestion_de_usuarios.xhtml";
    }
    
    public String historiaClinica() {
        return "historia_clinica.xhtml";
    }
    
    public String listaDeEspera() {
        return "lista_de_espera.xhtml";
    }
    
    public String listaDeMedicos() {
        return "lista_de_medicos.xhtml";
    }
    
    public String listaDePacientes() {
        return "lista_de_pacientes.xhtml";
    }
    
    public String enfermedad() {
        return "enfermedades.xhtml";
    }

    //TODO: posunut do loginu beanu
    public boolean shouldRedirectToLogin() {
        FacesContext ctx = FacesContext.getCurrentInstance();
        //if user is not logged in and the page is not login.xhtml
        return (!ctx.getViewRoot().getViewId().equals("/login.xhtml") && (usuario == null));
    }
    
    public boolean isPaciente(Usuario u) {
        return (u instanceof Paciente);
    }

    public boolean isMedico(Usuario u) {
        return (u instanceof Medico);
    }

    public boolean isAdministrativo(Usuario u) {
        return (u instanceof Administrativo);
    }

    public boolean isAdministrador(Usuario u) {
        return (u instanceof Administrador);
    }

    public String changeData() {
        return perfil();
    }
}